# 文件操作：读写  Input/Output   IO操作，网络
import os, time

def read_text():
    file = open('D:/Test.txt', mode='r')
    line_list = file.readlines()    # 将文件的按行读取到一个列表
    print(line_list)
    for line in line_list:
        print(line, end='')

    for i in range(50):
        print(file.readline())      # 读取一行
        print(file.readline(10))
        print(file.readline())

    content = file.read()           # 读取整个内容，并以字符串返回
    print(type(content))

    print(file.read(10))

    file.close()                    # 文件操作完成后，务必关闭


'''
r 只能读 
r+ 可读可写，不会创建不存在的文件，从顶部开始写，会覆盖之前此位置的内容
w+ 可读可写，如果文件存在，则覆盖整个文件，不存在则创建
w 只能写，覆盖整个文件，不存在则创建 
a 只能写，从文件底部添加内容 不存在则创建 
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建
但是实验发现，这里的r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容不完整。
'''
def write_text():
    file = open('D:/Test2.txt', mode='a+')
    file.write('Hello 这是Python写的内容.\n')
    file.write('Hello 这是Python写的内容.\n')
    file.close()


# 并没有专门的修改方法，只能先读，读进来后对整个内容进行修改，然后再写回(w+)。
def modify_text():
    file = open('D:/Test2.txt', mode='r', encoding='gbk')
    lines = file.readlines()
    lines[2] = '只能写，从文件底部添加内容 不存在则创建\n'
    file.close()

    file = open('D:/Test2.txt', mode='w')
    file.writelines(lines)
    file.close()


# WoniuATM
# 用文本文件保存账户信息，账户可以注册（新增），账户有多个字段：用户名，密码，余额，电话，（标准的二维表）
# 如何使用一个文本文件来表示二维表结构的数据。（与Excel的结构一致，或使用CSV文件格式 ）
# 新增账户时，直接按照CSV的格式和字段顺序追加写入。
# 修改余额：先读取文本文件内容到列表，再根据当前用户找到列表中对应的那一行，进行修改，而后整体覆盖写回。（性能不高）
# 转账，存款，取款均需要操作修改余额，当然，也可以修改密码或电话号码。
# 对于历史操作流水来说，可以新增一个文件，并且将用户名与用户账户进行关联查找.


def woniu_atm_test():
    file_path = os.path.abspath('..') + '\\data\\userinfo.txt'
    user_file = open(file_path)
    user_list = user_file.readlines()
    # for user_info in user_list:
    #     username = user_info.strip().split(',')[0]
    #     password = user_info.strip().split(',')[1]
    #     balance = user_info.strip().split(',')[2]
    #     phone = user_info.strip().split(',')[3]
    #     print(username + '\t' + password + '\t' + balance + '\t' + phone)

    # for i in range(1, len(user_list)):
    #     username = user_list[i].strip().split(',')[0]
    #     password = user_list[i].strip().split(',')[1]
    #     balance = user_list[i].strip().split(',')[2]
    #     phone = user_list[i].strip().split(',')[3]
    #     print(username + '\t' + password + '\t' + balance + '\t' + phone)

    #  查找用户名或用户信息
    # username = input('请输入你的用户名：')
    # for i in range(1, len(user_list)):
    #     # if username in user_list[i].strip():
    #     # if user_list[i].startswith(username):
    #         # print(user_list[i].split(',')[1])
    #         # print(user_list[i])
    #
    #     if user_list[i].startswith(username):
    #         return i
    # else:
    #     return -1

    # 为zhangsan的账户存800元
    print(user_list)
    for i in range(len(user_list)):
        username = user_list[i].split(',')[0]
        if username == 'zhangsan':
            temp_list = user_list[i].split(',')
            username = temp_list[0]
            password = temp_list[1]
            balance = temp_list[2]
            phone = temp_list[3]

            balance = str(int(balance) + 800)
            user_list[i] = username + ',' + password + ',' + balance + ',' + phone

    user_file.close()

    user_file = open(file_path, mode='w')
    user_file.writelines(user_list)
    user_file.close()



woniu_atm_test()

